home *** CD-ROM | disk | FTP | other *** search
/ The Macintosh Demo Applications CD / Apple-MacintoshDemoApplicationsCD-1.0-1992.iso / More Information / QuicKeys / For Programmers Only.sea / C Examples / SampleX.c < prev    next >
Text File  |  1991-06-22  |  2KB  |  97 lines

  1. /*
  2.     $Workfile:   SampleX.c  $
  3.     $Revision:   1.0  $
  4.                             
  5.     QuicKeys sample extension execute routine
  6.  
  7.     © 1990 CE Software, Inc.  All rights reserved.
  8.             
  9.     For QuicKeys 2 Extension Sample source code you have a royalty-free right
  10.     to include object code derived from this Sample source code in programs
  11.     that you develop.  You also have the right to use, distribute, and license
  12.     such programs to third parties without payment of any further license fees
  13.     to CE Software, Inc., so long as a copyright notice sufficient to protect
  14.     your copyright for your software in the United States or any other country;
  15.     is included in the graphic display of your software and on the labels
  16.     affixed to the media on which your software is distributed.
  17.  
  18.     WHEN    WHO        WHAT
  19. •••••
  20.     9/5        mkg        created version for both MPW and Think C
  21. •••••
  22. */
  23.  
  24. #ifndef THINK_C
  25. #include "types.h"
  26. #include "resources.h"
  27. #include "memory.h"
  28. #include "osutils.h"
  29. #include "sound.h"
  30. #endif
  31.  
  32. #include "extensions.h"
  33.  
  34. #include "SampleData.h"
  35.  
  36. #ifdef THINK_C
  37. #include <SetUpA4.h>
  38. #else
  39. #include <osutils.h>
  40. #endif
  41.  
  42. pascal void
  43. doExecute(short wSelector, SampleData* pMyData, ExecuteQueue* pMyQueue,
  44.                                                                 short wPeriodicType) {
  45.     Handle            hSicn;
  46.     unsigned long    ulNow;
  47.     
  48. #ifdef THINK_C
  49.     RememberA0();
  50.     
  51.     SetUpA4();
  52. #endif
  53.  
  54.     switch (wSelector) {
  55.         case initX:
  56.             /* fetch our SICN and place it in our ExecuteQueue record */
  57.             hSicn = GetResource('SICN', -14348);
  58.             if (hSicn != 0)
  59.                 BlockMove(*hSicn, pMyQueue->sicn, 32);
  60.             break;
  61.         
  62.         case regularX:
  63.             /* time to do the action called for in our key */
  64.             if (pMyData->lWaitTime <= 0) {
  65.                 SysBeep(1);
  66.                 }
  67.             else {
  68.                 /*
  69.                  * need to wait a while before playing.
  70.                  * Save the time we're going to beep in the refcon, enable
  71.                  * periodic calls, and exit.  Periodic calls will do the rest.
  72.                  */
  73.                 GetDateTime(&ulNow);
  74.                 pMyQueue->lRefCon = ulNow + (unsigned long)pMyData->lWaitTime;
  75.                 pMyQueue->flags |= PeriodicFlag;
  76.                 }
  77.             break;
  78.  
  79.         case periodicX:
  80.             /* check for the right time to beep */
  81.             GetDateTime(&ulNow);
  82.             if (ulNow >= (unsigned long)pMyQueue->lRefCon) {
  83.                 pMyQueue->flags &= ~PeriodicFlag;
  84.                 SysBeep(1);
  85.                 }
  86.             break;
  87.         
  88.         case abortX:
  89.             /* not used */
  90.             break;
  91.         }
  92.     
  93. #ifdef THINK_C
  94.         RestoreA4();
  95. #endif
  96.     }
  97.